<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function array(arr) {
      // 1. 使用对象的方式 reduce函数
      let res = arr.reduce((tempObj, item) => {
        // 判断tempObj是否是一个对象
        if (item in tempObj) {
          let count = tempObj[item]
          count = count + 1
          tempObj[item] = count
        } else {
          tempObj[item] = 1
        }
        return tempObj
      }, {})
      let num = -1
      for (const key in res) {
        /* 注意这里不能直接判断key === res[key]，因为对象中的key直接循环默认为字符串
          但是value（res[key]）是数字类型的。所以要把数字类型也转换为字符串类型的 */
        /* 或者使用双等于号，不使用三等于号。毕竟js会做类型转换。字符串'1'是弱等于数字1的
         if (key == res[key]) { ...... } */
        if (key === res[key] + '') {
          res[key] > num ? num = res[key] : ''
        }
      }
      return num
    };
    console.log(array([2, 2, 3, 4, 3, 3]))
  </script>
</body>

</html>